79 research outputs found

    Architecting fault-tolerant software systems

    Get PDF
    The increasing size and complexity of software systems makes it hard to prevent or remove all possible faults. Faults that remain in the system can eventually lead to a system failure. Fault tolerance techniques are introduced for enabling systems to recover and continue operation when they are subject to faults. Many fault tolerance techniques are available but incorporating them in a system is not always trivial. We consider the following problems in designing a fault-tolerant system. First, existing reliability analysis techniques generally do not prioritize potential failures from the end-user perspective and accordingly do not identify sensitivity points of a system. \ud Second, existing architecture styles are not well-suited for specifying, communicating and analyzing design decisions that are particularly related to the fault-tolerant aspects of a system. Third, there are no adequate analysis techniques that evaluate the impact of fault tolerance techniques on the functional decomposition of software architecture. Fourth, realizing a fault-tolerant design usually requires a substantial development and maintenance effort. \ud To tackle the first problem, we propose a scenario-based software architecture reliability analysis method, called SARAH that benefits from mature reliability engineering techniques (i.e. FMEA, FTA) to provide an early reliability analysis of the software architecture design. SARAH evaluates potential failures from the end-user perspective to identify sensitive points of a system without requiring an implementation. \ud As a new architectural style, we introduce Recovery Style for specifying fault-tolerant aspects of software architecture. Recovery Style is used for communicating and analyzing architectural design decisions and for supporting detailed design with respect to recovery. \ud As a solution for the third problem, we propose a systematic method for optimizing the decomposition of software architecture for local recovery, which is an effective fault tolerance technique to attain high system availability. To support the method, we have developed an integrated set of tools that employ optimization techniques, state-based analytical models (i.e. CTMCs) and dynamic analysis on the system. The method enables the following: i ) modeling the design space of the possible decomposition alternatives, ii ) reducing the design space with respect to domain and stakeholder constraints and iii ) making the desired trade-off between availability and performance metrics. \ud To reduce the development and maintenance effort, we propose a framework, FLORA that supports the decomposition and implementation of software architecture for local recovery. The framework provides reusable abstractions for defining recoverable units and for incorporating the necessary coordination and communication protocols for recovery

    Extending Failure Modes and Effects Analysis Approach for Reliability Analysis at the Software Architecture Design Level

    Get PDF
    Several reliability engineering approaches have been proposed to identify and recover from failures. A well-known and mature approach is the Failure Mode and Effect Analysis (FMEA) method that is usually utilized together with Fault Tree Analysis (FTA) to analyze and diagnose the causes of failures. Unfortunately, both approaches seem to have primarily focused on failures of hardware components and less on software components. Moreover, for utilizing FMEA and FTA very often an existing implementation of the system is required to perform the reliability analysis. We propose extensions to FMEA and FTA to utilize them for the reliability analysis of software at the architecture design level. We present the software architecture reliability analysis approach (SARAH) that incorporates the extended FMEA and FTA. The approach is illustrated using an industrial case for analyzing reliability of the software architecture of a Digital TV

    A PEER-TO-PEER FILE SHARING SYSTEM FOR WIRELESS AD-HOC NETWORKS

    Get PDF
    Cataloged from PDF version of article.In recent years, we have witnessed an increasing popularity of peer-to-peer (P2P) networks. Especially, file sharing applications aroused considerable interest of the Internet users and currently there exist several peer-to-peer file sharing systems that are functional on the Internet. In the mean time, recent developments in mobile devices and wireless communication technologies enabled personal digital assistants (PDA) to form ad-hoc networks in an easy and automated way. However, file sharing in wireless ad-hoc networks imposes many challenges that make conventional peer-to-peer systems operating on wire-line networks (i.e. Internet) inapplicable for this case. Information and workload distribution as well as routing are major problems for members of a wireless ad-hoc network, which are only aware of peers that are within their communication range. In this thesis, we propose a system that solves peer-to-peer file-sharing problem for wireless ad-hoc networks. Our system works according to principles of peer-to-peer systems, without requiring a central server, and distributes information regarding the location of shared files among members of the network. By means of constructing a distributed hash table (DHT) and forming a tree shaped overlay network based on the topology of the network itself, the system is able to answer location queries, and also discover and maintain routing information that is used to transfer files from a source-peer to another peer.Sözer , HasanM.S

    Availability analysis of software architecture decomposition alternatives for local recovery

    Get PDF
    We present an efficient and easy-to-use methodology to predict—at design time—the availability of systems that support local recovery. Our analysis techniques work at the architectural level, where the software designer simply inputs the software modules’ decomposition annotated with failure and repair rates. From this decomposition, we automatically generate an analytical model (a continuous-time Markov chain), from which an availability measure is then computed, in a completely automated way. A crucial step is the use of intermediate models in the input/output interactive Markov chain formalism, which makes our techniques efficient, mathematically rigorous, and easy to adapt. In particular, we use aggressive minimization techniques to keep the size of the generated state spaces small. We have applied our methodology on a realistic case study, namely the MPlayer open-source software. We have investigated four different decomposition alternatives and compared our analytical results with the measured availability on a running MPlayer. We found that our predicted results closely match the measured ones

    Web uygulamaları için model bazlı test süreci otomasyonu

    Get PDF
    Yazılım sistemlerinin boyutları ve karmaşıklıkları arttıkça, bu sistemlerin test edilmesi daha maliyetli olmaktadır. Maliyeti düşürmek ve verimliliği artırmak için model bazlı test teknikleri geliştirilmiştir. Bu teknikler ile sistem kullanım modelinden otomatik olarak test senaryoları oluşturulabilmektedir. Fakat sistem modelinin manuel bir şekilde oluşturulması gerekmektedir. Ayrıca, model ile oluşturulan test senaryolarının sistem üzerinde otomatik çalıştırılmalarını sağlamak için betikler veya özel programlar geliştirilmesi gerekmektedir. Bu çalışmada, Web uygulamaları için model bazlı test sürecini otomasyon desteği ile iyileştirmekteyiz. Farklı araçları birleştirerek, sistem modelinin yarı-otomatik bir yöntem ile oluşturulmasını ve bu model ile oluşturulan test senaryolarının, ayrı bir program geliştirilmesine gerek olmaksızın, sistem üzerinde otomatik çalıştırılmalarını sağlamaktayız

    Detecting Mode Inconsistencies in Component-Based Embedded Software

    Get PDF
    To deal with increasing size and complexity, componentbased software development has been employed in embedded systems. These systems comprise a set of components each of which implements a particular functionality. The system utilizes the components to provide the functionalities that are required in a set of working modes. Components can also be considered to have a set of working modes. They should work in harmony and consistent with the working mode of the system. Due to several errors that remain undetected during the design and implementation phases, components can make wrong assumptions about the working mode of the system and the working modes of the other components. These errors may lead to severe failures. Fault tolerance is required to prevent these failures at runtime. The first step to achieve fault tolerance is error detection. To detect mode inconsistencies at run-time, we propose a "lightweight" error detection mechanism, which can be integrated with component-based embedded systems. We define three dependent levels of abstractions: the run-time behavior of components, the working mode specifications of components and the specification of the working modes of the system. We define explicit links among these levels by specifying a mutual consistency condition. This allows us to detect the user observable run-time errors. The effectiveness of the approach is demonstrated by implementing a software monitor integrated into a TV system

    The DESARC method: an effective approach for university-industry cooperation

    Get PDF
    Achieving excellence in software development techniques is an important issue for the organizations that develop advanced software-intensive products. Within this context, software excellence is defined as the adoption of advanced software techniques and methods to cope with the complexity and the needs of modern software systems. However, this is not trivial due to the rapidly changing software technology, continuously increasing existence of large and complex software systems and difficulty in following the developments of the state-of-the-art in computer science. This paper focuses on the last aspect. To overcome this problem, it is necessary to define new ways for efficient university-software industry cooperation since advancements in computer science are largely carried out by universities. The existing university-industry cooperation methods are usually triggered after writing grant proposals to financing organizations and passing through strict selection processes. This is, in general, a very inefficient and tedious process to undertake. Even in a perfect review process, many good ideas may not go through simply because they do not fulfill the necessary procedural requirements. Moreover, industrial people may not be familiar with the methods and jargon used in the selection processes. Even if a project is approved, many times it does not result in a technology transfer to industry since accomplishing academic results is the main objective of such projects. This paper presents an overview of a pilot implementation of our approach termed as “Describe, Search and Acquire the Required Capability” (DESARC), which aims at establishing a more effective identification of research projects, allocation of these research projects to research groups and the cooperation between universities and industry. We discuss the results of the application of the method to two large IT companies in Turkey

    Database dependency analysis for PL/SQL programs

    Get PDF
    PL/SQL dili ile yazılan programlar, veri tabanı üzerinde prosedür ve fonksiyon objeleri, ve bu objelerin bir kümesini barındıran paket objeleri olarak geliştirilmektedirler. Bu objeler yoğun olarak tablo ve görünüm gibi veri tabanı objelerini kullanmaktadırlar. Mevcut analiz araçları ile her bir objenin hangi diğer objelere bağımlılığı olduğunu görmek mümkündür. Ancak bu bilgi paket seviyesinde sağlanıp, paketler içindeki her bir prosedür ve fonksiyonun hangi veri tabanı elemanlarını kullanıldığı bilgisine ulaşılamamaktadır. Özellikle uzun yıllardır idame edilen programlarda, paketler çok fazla sayıda prosedür ve fonksiyon barındırmaktadır ve bu paketlerin belirli zamanlarda parçalanması idame edilebilirlik açısından fayda sağlamaktadır. Bu amaçla programların yeniden yapılandırılması, değişikliklere ilişkin etki analizlerinin yapılabilmesine destek sağlayacak bir analiz aracı geliştirilmiştir. Bu araç, paketler içerisinde yer alan prosedür ve fonksiyonların kullandıkları ortak veri tabanı tablolarını tespit edebilmekte ve böylece değişiklik etki analizi ile tasarım kararlarına destek olmaktadır. Geliştirdiğimiz analiz aracı, bir teknoloji şirketindeki müşteri ilişkileri yönetimi sistemine uygulanmıştır.PL/SQL programs are composed of procedure and function objects deployed on a database. These objects can be grouped into a set of package objects and they extensively use database objects such as tables and views. Existing analysis tools can detect which objects are dependent on which other objects. However, this information is available only at the package level. It is not possible to detect database dependencies of procedures and functions that are encapsulated in packages. Existing packages might include many procedures and functions and they might have to be refactored to improve software maintainability, especially in the case of legacy systems that are maintained for years. In this work, we developed a dependency analysis tool to support software refactoring and impact analysis. This tool detects database dependencies of procedures and functions taking place in packages. It supports change impact analysis and design decisions by detecting database tables commonly accessed by various objects. We applied our tool on a customer relations management system maintained by a technology firm.Publisher versio

    Statik ve dinamik analizler ile hesaplanan risklere dayalı olarak test modellerinin iyileştirilmesi

    Get PDF
    Model bazlı test teknikleri, sistem kullanım modelinden test senaryolarının otomatik olarak oluşturulmasını sağlayarak verimliliği artırmaktadır. Prensip olarak sonsuz sayıda test senaryosu oluşturmak mümkündür; ancak bu senaryoları sınamak için kaynaklar kısıtlıdır. Dolayısıyla, kullanılan modelin içeriği ve test senaryosu oluşturma teknikleri, etkin bir şekilde hataların tespit edilmesini sağlamalıdır. Bu çalışmamızda, model bazlı test için kullanılan model içeriği ve model parametrelerinin iyileştirilmesine yönelik özgün bir yaklaşım öneriyoruz. Yaklaşımımızda kullandığımız Markov zincirleri, istatistiksel verileri baz alarak, model parametrelerini, hata riski yüksek olan senaryolara ağırlık verecek şekilde güncellememize olanak vermektedir. Statik kod analiz teknikleri ve kullanım profili analizlerini değerlendirerek sık kullanılan ve hata ile karşılaşılma olasılığı yüksek olan işlevleri belirliyoruz. Model içeriğini bu işlevleri test etmek üzere oluşturuyoruz. Dinamik analiz sonuçlarına göre hata oluşumuna yatkın olan işlevlerin, oluşturulan test senaryolarına dâhil edilme olasılıklarını artıracak şekilde model parametrelerini güncelliyoruz. Bu yöntem ile gerçek bir Akıllı TV sistemi yazılımı için oluşturulan test senaryolarını kullandığımızda, hata tespit etkinliğinin arttığını gözlemledik.publisher versio

    Statik ve dinamik analizler ile hesaplanan risklere dayalı olarak test modellerinin iyileştirilmesi

    Get PDF
    Model bazlı test teknikleri, sistem kullanım modelinden test senaryolarının otomatik olarak oluşturulmasını sağlayarak verimliliği artırmaktadır. Prensip olarak sonsuz sayıda test senaryosu oluşturmak mümkündür; ancak bu senaryoları sınamak için kaynaklar kısıtlıdır. Dolayısıyla, kullanılan modelin içeriği ve test senaryosu oluşturma teknikleri, etkin bir şekilde hataların tespit edilmesini sağlamalıdır. Bu çalışmamızda, model bazlı test için kullanılan model içeriği ve model parametrelerinin iyileştirilmesine yönelik özgün bir yaklaşım öneriyoruz. Yaklaşımımızda kullandığımız Markov zincirleri, istatistiksel verileri baz alarak, model parametrelerini, hata riski yüksek olan senaryolara ağırlık verecek şekilde güncellememize olanak vermektedir. Statik kod analiz teknikleri ve kullanım profili analizlerini değerlendirerek sık kullanılan ve hata ile karşılaşılma olasılığı yüksek olan işlevleri belirliyoruz. Model içeriğini bu işlevleri test etmek üzere oluşturuyoruz. Dinamik analiz sonuçlarına göre hata oluşumuna yatkın olan işlevlerin, oluşturulan test senaryolarına dâhil edilme olasılıklarını artıracak şekilde model parametrelerini güncelliyoruz. Bu yöntem ile gerçek bir Akıllı TV sistemi yazılımı için oluşturulan test senaryolarını kullandığımızda, hata tespit etkinliğinin arttığını gözlemledik.publisher versio
    corecore